package Map;

import java.util.HashMap;
import java.util.Map;

/**
 * Map  查找表
 * Map体现的结构是一个多行两行的表格，其中左列称为key，右列称为value。
 * Map总是成对保存数据，并且总是根据key获取对应的valie，因此我们可以将查询的条件作为key
 * 查询对应的结果作为value保存到Map中
 * Map有一个要求：key不允许重复（equals比较的结果）
 *
 * java.util.Map接口，是所有Map的顶级接口，规定Map的相关功能。
 * 常用实现类：
 * java.util.HashMap:称为散列表，使用散列表算法实现Map，当今查询速度最快的数据结构。
 * java.util.TreeMap:使用二叉树实现的Map
 *
 */
public class MapDemo {
    public static void main(String[] args) {
        Map<String ,Integer>map=new HashMap<>();
        /*
        V put（K k,V v）
        将给定的键值对存入Map中。由Map要求key不允许重复，若使用已有的key存入value
        时则为替换value操作。返回值为原value，否则返回值为null

        注：
        如果Map的value是包装类类型时，在接受value值得时候一点用包装类类型的变量
        接受，避免因为自动拆装箱出现的空指针.
         */
        Integer num= map.put("语文",99);
        System.out.println(num);
        map.put("数学",92);
        map.put("英语",89);
        map.put("历史",87);
        map.put("地理",95);
        map.put("化学",91);
        System.out.println(map);
        num=map.put("数学",70);
        System.out.println(map);
        System.out.println("被替换的value："+num);

       /*
       V get(Object key)
       根据给定的key获取对应的value，如果给定的key不存在则返回值为null
        */
        num=map.get("化学");
        System.out.println("化学："+num);
        num=map.get("龟儿子");
        System.out.println("龟儿子："+num);

        /*
        V remove（Object key）
        删除给定的key所对应的键值对，返回值为该key对应的value
         */
        num=map.remove("化学");
        System.out.println(map);
        System.out.println("被删除的《化学》所对应的value："+num);

        int size=map.size();
        System.out.println("长度.size:"+size);
        /*
        boolean containKey(Object key)
        判断当前Map是否包含给定的key

        boolean  containsValue（Object value）
        判断当前Map是否包含给定的value
         */

        boolean ck=map.containsKey("数学");//判断Map是否包含key：“数学”
        boolean cv= map.containsValue(95);//判断Map是否包含value：95
        System.out.println("包含key："+ck);
        System.out.println("包含value："+cv);


    }
}
